package com.atguigu.springcloud.service.impl;

import com.atguigu.springcloud.service.IMessageProvider;
import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.messaging.Source;
import org.springframework.integration.support.MessageBuilder;
import org.springframework.messaging.MessageChannel;

import javax.annotation.Resource;
import java.util.UUID;


//在这个service实现类上不需要添加service注解，因为这个业务类是用来发送消息的，是和stream打交道的。
//要添加的是Stream中的@EnableBinding注解，表示该消费发送者项目中service发送消息的业务类与Stream的binder对象绑定，发送消息给binder

@EnableBinding(Source.class)//定义消息推送的管道。这里用到的Source类是stream.messaging.source包下的
public class MessageProviderImpl implements IMessageProvider {

    @Resource
    private MessageChannel output; //创建一个Stream的消息发送管道，消息发送者项目通过管道发送消息给binder

    @Override
    public String send() {
        //定义要发送的消息：
        String message = UUID.randomUUID().toString();
        //使用消息构建器，先构建要发送的消息，再使用消息发送管道对象调用send方法来发送消息：
        output.send(MessageBuilder.withPayload(message).build());

        System.out.println("*********message:"+message);
        return null;
    }
}
